// background.js
const registeredPages = new Map();

// 监听来自内容脚本的消息
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  console.log('[BACKGROUND] 收到消息:', message, '来自标签页:', sender.tab?.id);

  // 注册页面
  if (message.action === 'registerPage') {
    registeredPages.set(sender.tab.id, {
      tab: sender.tab,
      url: message.url
    });
    return true;
  }

  // 取消注册页面
  if (message.action === 'unregisterPage') {
    registeredPages.delete(sender.tab.id);
    return true;
  }

  // 请求HTML内容
  if (message.action === 'requestHtml') {
    // 查找目标页面
    const targetPage = Array.from(registeredPages.values()).find(
      page => (page.url).includes(message.targetUrl)
    );

    if (!targetPage) {//未找到目标页面
      chrome.tabs.sendMessage(sender.tab.id, {
        action: 'htmlResponse',
        requestId: message.requestId,
        error: '未找到目标页面'
      });
      return true;
    }
    // 向目标页面发送消息请求HTML
    chrome.tabs.sendMessage(targetPage.tab.id, {
      action: 'fetchHtml',
      code: message.code,
      requestId: message.requestId,
      targetCss: message.targetCss,
    }, (response) => {
      if (response && response.html) {
        chrome.tabs.sendMessage(sender.tab.id, {
          action: 'htmlResponse',
          requestId: message.requestId,
          html: response.html
        });
      } else {
        chrome.tabs.sendMessage(sender.tab.id, {
          action: 'htmlResponse',
          requestId: message.requestId,
          error: '无法获取HTML内容'
        });
      }
    });
    return true;
  }
});

// 监听标签页关闭事件，自动取消注册
chrome.tabs.onRemoved.addListener((tabId) => {
  if (registeredPages.has(tabId)) {
    registeredPages.delete(tabId);
    console.log(`[BACKGROUND] 页面 ${tabId} 因标签关闭已取消注册`);
  }
});